package com.ws.view;

import com.ws.bean.Customer;
import com.ws.service.CustomerList;
import com.ws.util.CMUtility;


/**
 * @Description CustomerView 为主模块，负责菜单的显示和处理用户操作
 */
public class CustomerView {

    private CustomerList customerList = new CustomerList(10);
    public CustomerView() {
        Customer cust = new Customer("张三", '男', 30, "010-56253825",
                "abc@email.com");
        customerList.addCustomer(cust);
    }
    /**
     * @Description 显示《客户信息管理软件》界面的方法
     */
    public void enterMainMenu() {
        boolean loopFlag = true;
        do {
            System.out.println("\n-----------------客户信息管理软件-----------------\n");
            System.out.println("                   1 添 加 客 户");
            System.out.println("                   2 修 改 客 户");
            System.out.println("                   3 删 除 客 户");
            System.out.println("                   4 客 户 列 表");
            System.out.println("                   5 退       出\n");
            System.out.print("                   请选择(1-5)：");

            char key = CMUtility.readMenuSelection();
            System.out.println();
            switch (key) {
                case '1':
                    addNewCustomer();
                    break;
                case '2':
                    modifyCustomer();
                    break;
                case '3':
                    deleteCustomer();
                    break;
                case '4':
                    listAllCustomers();
                    break;
                case '5':
                    System.out.print("确认是否退出(Y/N)：");
                    char isExit = CMUtility.readConfirmSelection();
                    if (isExit == 'Y')
                        loopFlag = false;
                    break;
            }
        } while (loopFlag);
    }

    /**
     * @Description 添加客户的操作
     */
    private void addNewCustomer() {
        System.out.println("---------------------添加客户---------------------");
        System.out.print("姓名：");
        String name = CMUtility.readString(10);
        System.out.print("性别：");
        char gender = CMUtility.readChar();
        System.out.print("年龄：");
        int age = CMUtility.readInt();
        System.out.print("电话：");
        String phone = CMUtility.readString(13);
        System.out.print("邮箱：");
        String email = CMUtility.readString(30);

        //将上述对象封装到对象中
        Customer customer = new Customer(name, gender, age, phone, email);

        boolean isSuccess = customerList.addCustomer(customer);
        if (isSuccess) {
            System.out.println("---------------------添加完成---------------------");
        } else {
            System.out.println("----------------记录已满,无法添加-----------------");
        }

    }

    /**
     * @Description 修改客户的操作
     */
    private void modifyCustomer() {
        System.out.println("---------------------修改客户---------------------");
        Customer cust = null;
        int num = 0;
        for (;;) {
            System.out.print("请选择待修改客户编号(-1退出)：");
            num = CMUtility.readInt();
            if (num == -1) {
                return;
            }

            cust = customerList.getCustomer(num - 1);
            if (cust == null) {
                System.out.println("无法找到指定客户");
            } else {//找到了
                break;
            }
        }
        //修改客户信息
        System.out.println("姓名(" + cust.getName() + ")：");
        String name = CMUtility.readString(10, cust.getName());

        System.out.println("性别(" + cust.getGender() + ")：");
        char gender = CMUtility.readChar(cust.getGender());

        System.out.println("年龄(" + cust.getAge() + ")：");
        int age = CMUtility.readInt(cust.getAge());

        System.out.println("电话(" + cust.getPhone() + ")：");
        String phone = CMUtility.readString(13, cust.getPhone());

        System.out.println("邮箱(" + cust.getEmail() + ")：");
        String email = CMUtility.readString(30, cust.getName());

        Customer newCust = new Customer(name, gender, age, phone, email);
        boolean isReplaced = customerList.replaceCustomer(num - 1, newCust);
        if (isReplaced) {
            System.out
                    .println("---------------------修改完成---------------------");
        } else {
            System.out.println("----------修改失败--------------");
        }
    }

    /**
     * @Description 删除客户的操作
     */
    private void deleteCustomer() {
        System.out.println("---------------------删除客户---------------------");
        int number = 0;
        for (;;) {
            System.out.print("请选择待删除客户编号(-1退出)：");
            number = CMUtility.readInt();
            if (number == -1) {
                return;
            }
            Customer customer = customerList.getCustomer(number - 1);
            if (customer == null) {
                System.out.println("无法找到指定的用户");
            } else {
                break;
            }
        }
        //找到了指定的客户
        System.out.print("确认是否删除(Y/N)：");
        char isDelete = CMUtility.readConfirmSelection();
        if (isDelete == 'Y') {
            customerList.deleteCustomer(number - 1);
        }
    }

    /**
     * @Description 显示客户的操作
     */
    private void listAllCustomers() {
        System.out.println("---------------------------客户列表---------------------------");

        int total = customerList.getTotal();
        if (total == 0) {
            System.out.println("没有客户记录");
        } else {
            System.out.println("编号\t姓名\t性别\t年龄\t\t电话\t\t邮箱");
            Customer[] customers = customerList.getCustomers();
            for (int i = 0; i< customers.length; i++) {
                Customer customer = customers[i];
                System.out.println((i+1) + "\t\t" + customer.getName() + "\t" + customer.getGender()
                + "\t\t" + customer.getAge() + "\t\t" + customer.getPhone() + "\t" + customer.getEmail());
            }

        }

    }

    public static void main(String[] args) {

        CustomerView view = new CustomerView();
        view.enterMainMenu();

    }
}

